Notice
This document is currently being drafted and is not complete. (Draft: 4)
Designed with flexibility and ease of use in mind, this API enables remote control of a puriFlash® system and all its peripherals. It makes it easy to manage the entire purification processes in a laboratory environment.
System Control: seamless management of connections to puriFlash® systems and their various peripherals.
Advanced Queue Management: Organize and monitor sequential and parallel processes with efficient queuing.
Real-time Monitoring: Stay informed with system status updates and other collection, elution and detection measures.
Anomaly Detection: Quickly identify and report errors and issues.
Compatible with all puriFlash® series.
A cross-platform console application that can be run as a service on any computer connected to the puriFlash® system.
Activation: Upon the initial launch of the Phoenix Server, you'll need to obtain a license key for activation. Contact the support team with the unique key generated by the application to activate your server.
Windows
Run as Administrator: Start 'phoenix-server.exe' with administrator privileges.
Disable Quick Edit Mode: Turn off the terminal's 'Quick Edit' mode to prevent unintentional pauses in the server operation.
Windows Defender Exclusion: Add the Phoenix Server application folder to the exclusion list in Windows Defender to avoid any interference from the operating system's security features.
MacOS / Linux
The Phoenix Server uses a configuration file named phoenix-server-config.json to manage its connection and operations with the puriFlash® system. Similarly, the puriflash-config.json file sets up the puriFlash® system itself
It's crucial that these configurations accurately match the actual system setup to avoid errors. If not, the server will halt with an error message.
For setup details, check the SystemConfiguration and ServerConfiguration schemas in the components/schemas section of our documentation. Make sure your configuration files, found in the config folder of the application's root.
API Exploration: Use tools like Postman or MQTTX to explore and interact with the API.
Performance Monitoring: Connect using JConsole tool to the application's JMX server at {host}:9010.
(TODO: Additional project examples and usage scenarios will be provided on GitHub.)
Default MQTT port.
This API is meant to be used within a secure local network environment. Therefore, no authentication credentials are required for connecting to the MQTT broker.
This API is meant to be used within a secure local network environment. Therefore, no authentication credentials are required for connecting to the MQTT broker.
Channel used for sending requests to the system.
Available only on servers:
MQTT Client unique identifier.
Accepts the following message:
This message contains the information needed to send a request to the system. Depending on the command used, a specific parameter may be required.
Defines the structure for sending commands to the system. Each request must specify a command. Some commands may require additional parameters to execute properly.
{
"timestamp": "2024-01-31T08:00:00.000Z",
"uuid": "b1c23e6c-e679-469c-a32a-6753727ff96d",
"command": "CONNECT"
}
Simulate ELSD, XIC1 and XIC2 detection data
{
"command": "UPDATE_SIMULATED_DATA_PARAMETERS",
"parameter": [
{
"channelType": "ELSD",
"steps": [
{
"angle": 90,
"startingValue": 0,
"endValue": 500,
"duration": 120,
"delay": 0,
"noise": 0
},
{
"angle": 90,
"startingValue": 500,
"endValue": 0,
"duration": 120,
"delay": 0,
"noise": 0
},
{
"angle": 90,
"startingValue": 0,
"endValue": 1000,
"duration": 120,
"delay": 0,
"noise": 0
},
{
"angle": 90,
"startingValue": 1000,
"endValue": 0,
"duration": 120,
"delay": 0,
"noise": 0
}
]
},
{
"channelType": "XIC1",
"steps": [
{
"angle": 90,
"startingValue": 0,
"endValue": 1000,
"duration": 180,
"delay": 0,
"noise": 0
},
{
"angle": 90,
"startingValue": 1000,
"endValue": 0,
"duration": 300,
"delay": 0,
"noise": 0
}
]
},
{
"channelType": "XIC2",
"steps": [
{
"angle": 90,
"startingValue": 0,
"endValue": 0,
"duration": 240,
"delay": 0,
"noise": 0
},
{
"angle": 90,
"startingValue": 0,
"endValue": 3000,
"duration": 120,
"delay": 0,
"noise": 0
},
{
"angle": 90,
"startingValue": 3000,
"endValue": 0,
"duration": 120,
"delay": 0,
"noise": 0
}
]
}
]
}
Pump auto-priming 100mL/min during 1min for each solvents ways and ELSD prime purge 2 refills
{
"command": "SET_SQ_ENTRIES",
"parameter": [
{
"rank": 1,
"name": "Elution auto-priming, ELSD prime",
"parallelProcessesParameters": [
{
"type": "ELUTION_PURGE",
"param": {
"type": "ElutionPurgeParams",
"detectionParameters": {
"channels": [
{
"type": "UV1",
"unit": "MAU",
"range": {
"max": 254,
"min": 254
},
"threshold": 0
}
],
"massParams": null,
"elsdParams": null,
"baselineCorrectionParameters": null,
"inflexionPointParameters": null
},
"elutionParameters": {
"equilibrationSteps": [],
"methodSteps": [
{
"stepTime": 0,
"flowRate": 100,
"percentageA": 100,
"percentageB": 0,
"percentageC": 0,
"percentageD": 0,
"gradient": false
},
{
"stepTime": 60000,
"flowRate": 100,
"percentageA": 0,
"percentageB": 100,
"percentageC": 0,
"percentageD": 0,
"gradient": false
},
{
"stepTime": 120000,
"flowRate": 100,
"percentageA": 0,
"percentageB": 0,
"percentageC": 100,
"percentageD": 0,
"gradient": false
},
{
"stepTime": 180000,
"flowRate": 100,
"percentageA": 0,
"percentageB": 0,
"percentageC": 0,
"percentageD": 100,
"gradient": false
},
{
"stepTime": 240000,
"flowRate": 100,
"percentageA": 0,
"percentageB": 0,
"percentageC": 0,
"percentageD": 100,
"gradient": false
}
]
},
"collectionParameters": {
"collectionCondition": null,
"firstRackName": "-",
"secondRackName": "-",
"thirdRackName": "-",
"collectionSteps": null,
"needleRinsingParams": {
"enabled": false,
"volume": 0
},
"collectionStartingTubeMode": null
},
"columnHolder": "C1"
},
"delay": 0,
"sync": false
},
{
"type": "ELSD_PRIME_PURGE",
"param": {
"type": "ElsdPrimePurgeParams",
"cycles": 2
},
"delay": 0,
"sync": false
}
],
"cycles": 1
}
]
}
{
"command": "SET_SQ_ENTRIES",
"parameter": [
{
"rank": 1,
"name": "Pre-Purification",
"parallelProcessesParameters": [
{
"type": "PRE_PURIFICATION",
"param": {
"type": "PrePurificationParams",
"elutionPurgeParams": {
"detectionParameters": {
"channels": [
{
"type": "UV_SCAN",
"unit": "MAU",
"range": {
"max": 400,
"min": 200
},
"threshold": 0
}
],
"elsdParams": null,
"massParams": null,
"inflexionPointParameters": null,
"baselineCorrectionParameters": null
},
"elutionParameters": {
"equilibrationSteps": [],
"methodSteps": [
{
"stepTime": 0,
"flowRate": 100,
"percentageA": 0,
"percentageB": 0,
"percentageC": 0,
"percentageD": 100,
"gradient": false
},
{
"stepTime": 60000,
"flowRate": 100,
"percentageA": 0,
"percentageB": 0,
"percentageC": 100,
"percentageD": 0,
"gradient": false
},
{
"stepTime": 180000,
"flowRate": 100,
"percentageA": 0,
"percentageB": 0,
"percentageC": 100,
"percentageD": 0,
"gradient": false
}
]
},
"collectionParameters": {
"collectionCondition": null,
"collectionStartingTubeMode": null,
"collectionSteps": null,
"needleRinsingParams": {
"enabled": false,
"volume": 0
},
"firstRackName": "RACK 18 x 150",
"secondRackName": "RACK 18 x 150",
"thirdRackName": "RACK 18 x 150"
},
"columnHolder": "C1"
},
"elsdPurgeParams": {
"detectionParameters": {
"channels": [
{
"type": "ELSD",
"unit": "MV",
"range": {
"max": 35,
"min": 35
},
"threshold": 0
}
],
"elsdParams": {
"makeUpFlowRate": 0.15,
"stabilizationTemperatureDelta": 2,
"valveRotationDurationMillis": 1500
},
"massParams": null,
"inflexionPointParameters": null,
"baselineCorrectionParameters": null
},
"duration": 120
},
"massPurgeParams": {
"detectionParameters": {
"channels": [
{
"type": "DELTA_TIC",
"unit": "MC_S",
"range": {
"max": 0,
"min": 0
},
"threshold": 0
}
],
"massParams": {
"type": "APCI",
"polarity": "POSITIVE",
"ionParamsType": "STANDARD"
},
"elsdParams": null,
"inflexionPointParameters": null,
"baselineCorrectionParameters": null
},
"massStabilizationParams": {
"detectorConfig": {
"apciCoronaDischargeDelta": 1,
"capillaryTemperatureDeltaPercentage": 0.1,
"capVoltageDeltaPercentage": 0.1,
"esiVoltageDelta": 150,
"model": "MS2000",
"nebulizationDurationMillis": 0,
"sourceGasTemperatureDelta": 10
},
"massParameters": {
"type": "APCI",
"polarity": "POSITIVE",
"ionParamsType": "STANDARD"
}
},
"duration": 180,
"cycleCount": 3
}
},
"delay": 0,
"sync": false
}
],
"cycles": 1
}
]
}
{
"command": "SET_SQ_ENTRIES",
"parameter": [
{
"rank": 1,
"name": "Purification",
"parallelProcessesParameters": [
{
"type": "PURIFICATION",
"param": {
"type": "Method",
"name": "ucbapcilowsplit15",
"sampleName": "ucb",
"projectName": "ucb",
"comments": "",
"solventsParams": {
"a": {
"solventName": "Dichloromethane",
"estimatedConsumedVolume": 0,
"activated": true
},
"b": {
"solventName": "Methanol",
"estimatedConsumedVolume": 0,
"activated": true
},
"c": {
"solventName": null,
"estimatedConsumedVolume": 0,
"activated": false
},
"d": {
"solventName": null,
"estimatedConsumedVolume": 0,
"activated": false
}
},
"columnParams": {
"columnName": "US5C18HQ-250/212",
"columnHolder": "C1",
"optimumFlowRate": 16,
"columnStacked": false,
"maxPressure": 200,
"equilibrationMode": "ADVANCED",
"equilibrationMaxDuration": 0
},
"injectionParams": {
"injectionMode": "AUTO_SAMPLER",
"auto": true,
"injectionWay": "LOOP",
"dryLoadName": null,
"loopName": null,
"autoSamplerInjectionParameters": {
"loopVolume": 2,
"dmsoVolume": 0,
"vialNumber": 1,
"bubbleVolume": 0.01,
"sampleVolume": 2
},
"injectionPumpParameters": null
},
"stopModeParams": null,
"elutionParams": {
"equilibrationSteps": [
{
"stepTime": 0,
"flowRate": 15,
"percentageA": 97.5,
"percentageB": 2.5,
"percentageC": 0,
"percentageD": 0,
"gradient": true
},
{
"stepTime": 30000,
"flowRate": 15,
"percentageA": 97.5,
"percentageB": 2.5,
"percentageC": 0,
"percentageD": 0,
"gradient": true
}
],
"methodSteps": [
{
"stepTime": 0,
"flowRate": 15,
"percentageA": 97.5,
"percentageB": 2.5,
"percentageC": 0,
"percentageD": 0,
"gradient": true
},
{
"stepTime": 30000,
"flowRate": 15,
"percentageA": 97.5,
"percentageB": 2.5,
"percentageC": 0,
"percentageD": 0,
"gradient": true
},
{
"stepTime": 300000,
"flowRate": 15,
"percentageA": 100,
"percentageB": 0,
"percentageC": 0,
"percentageD": 0,
"gradient": true
},
{
"stepTime": 600000,
"flowRate": 15,
"percentageA": 100,
"percentageB": 0,
"percentageC": 0,
"percentageD": 0,
"gradient": true
}
]
},
"detectionParams": {
"channels": [
{
"type": "UV1",
"unit": "MAU",
"range": {
"max": 200,
"min": 200
},
"threshold": 10
},
{
"type": "ELSD",
"unit": "MV",
"range": {
"max": 35,
"min": 35
},
"threshold": 10
},
{
"type": "DELTA_TIC",
"unit": "MC_S",
"range": {
"max": 0,
"min": 0
},
"threshold": 10
},
{
"type": "XIC1",
"unit": "MC_S",
"range": {
"max": 199,
"min": 192
},
"threshold": 10
},
{
"type": "XIC2",
"unit": "MC_S",
"range": {
"max": 254,
"min": 246
},
"threshold": 10
},
{
"type": "UV_SCAN",
"unit": "MAU",
"range": {
"max": 400,
"min": 200
},
"threshold": 10
}
],
"massParams": {
"type": "APCI",
"polarity": "POSITIVE",
"ionParamsType": "LOW_TEMP_LOW_FRAG"
},
"elsdParams": {
"valveRotationDurationMillis": 1500,
"makeUpFlowRate": 1.5,
"stabilizationTemperatureDelta": 2
},
"baselineCorrectionParameters": null,
"inflexionPointParameters": null
},
"collectionParams": {
"collectionCondition": "(ELSD AND XIC1) OR (ELSD AND XIC2)",
"firstRackName": "RACK 18 x 150",
"secondRackName": "RACK 18 x 150",
"thirdRackName": "RACK 18 x 150",
"collectionSteps": [
{
"stepTime": 0,
"inflexionPointEnabled": false,
"volume": 25,
"mode": "THRESHOLD",
"action": "NONE"
}
],
"needleRinsingParams": {
"enabled": true,
"volume": 3
},
"collectionStartingTubeMode": "REFRESH_ALL_RACKS"
}
},
"delay": 0,
"sync": false
}
],
"cycles": 1
}
]
}
Air purge the IR-20SI-F0004 column. After the bypass, the process executes an elution and ELSD purge.
{
"command": "SET_SQ_ENTRIES",
"parameter": [
{
"rank": 1,
"name": "Post-Purification",
"parallelProcessesParameters": [
{
"type": "POST_PURIFICATION",
"param": {
"type": "PostPurificationParams",
"columnRef": "IR-20SI-F0004",
"elutionPurgeParams": {
"detectionParameters": {
"channels": [
{
"type": "UV_SCAN",
"unit": "MAU",
"range": {
"max": 400,
"min": 200
},
"threshold": 0
}
],
"elsdParams": null,
"massParams": null,
"inflexionPointParameters": null,
"baselineCorrectionParameters": null
},
"elutionParameters": {
"equilibrationSteps": [],
"methodSteps": [
{
"stepTime": 0,
"flowRate": 15,
"percentageA": 100,
"percentageB": 0,
"percentageC": 0,
"percentageD": 0,
"gradient": true
},
{
"stepTime": 300000,
"flowRate": 15,
"percentageA": 100,
"percentageB": 0,
"percentageC": 0,
"percentageD": 0,
"gradient": true
}
]
},
"collectionParameters": {
"collectionCondition": null,
"collectionStartingTubeMode": null,
"collectionSteps": null,
"needleRinsingParams": {
"enabled": true,
"volume": 3
},
"firstRackName": "RACK 18 x 150",
"secondRackName": "RACK 18 x 150",
"thirdRackName": "RACK 18 x 150"
},
"columnHolder": "C1"
},
"elsdPurgeParams": {
"detectionParameters": {
"channels": [
{
"type": "ELSD",
"unit": "MV",
"range": {
"max": 35,
"min": 35
},
"threshold": 0
}
],
"elsdParams": {
"makeUpFlowRate": 0.15,
"stabilizationTemperatureDelta": 2,
"valveRotationDurationMillis": 1500
},
"massParams": null,
"inflexionPointParameters": null,
"baselineCorrectionParameters": null
},
"duration": 120
}
},
"delay": 0,
"sync": false
}
],
"cycles": 1
}
]
}
{
"command": "START_SQ"
}
Update system configuration with a full simulated PF5250.
{
"command": "RELOAD_SYSTEM_CONFIGURATION",
"parameter": {
"model": "PF_5_250",
"option": "NONE",
"connectionConfig": {
"autoPortDetection": true,
"autoConnection": true,
"heartbeatCheck": false,
"undetectableVirtualPorts": [],
"ignoredVirtualPorts": []
},
"pumpConfig": {
"model": "PF_5250",
"maxFlowRate": 250,
"maxPressure": 250,
"portName": null,
"valves": [
"LOOP",
"C1_C2"
]
},
"collectorConfig": {
"capacity": 3,
"uvLeakSensor": true,
"needleVolume": 0,
"homeOffsetX": -6,
"homeOffsetY": -27.5,
"collectorLeakSensor": true,
"deadVolume": 2.936,
"portName": null,
"ignored": false
},
"uvDetectorConfig": {
"type": "UV800",
"portName": null,
"ignored": false
},
"extraModules": [
"ELSD",
"MASS",
"AUTO_SAMPLER"
],
"simulatedModules": [
"PUMP",
"COLLECTOR",
"UV",
"ELSD",
"ELSD_SPLIT",
"MASS",
"MASS_SPLIT",
"AUTO_SAMPLER"
],
"virtualModules": [],
"injectionPumpConfig": null,
"secondCollectorConfig": null,
"elsdConfig": {
"detectorConfig": {
"internal": true,
"nebulizationDurationMillis": 2100,
"portName": null
},
"splitConfig": {
"makeupPumpFlowRate": 0.15,
"valveRotationPeriodMillis": 1500,
"deadVolume": 0.002,
"portName": null
},
"ignored": false
},
"massConfig": {
"detectorConfig": {
"model": "MS2000",
"nebulizationDurationMillis": 1000,
"capillaryTemperatureDeltaPercentage": 0.1,
"capVoltageDeltaPercentage": 0.1,
"sourceGasTemperatureDelta": 10,
"esiVoltageDelta": 150,
"apciCoronaDischargeDelta": 1
},
"splitConfig": {
"makeupPumpFlowRate": 0.1,
"valveRotationPeriodMillis": 1500,
"deadVolume": 0.019,
"portName": null,
"dilutionPumpFlowRate": 0.5
},
"ignored": false
},
"autoSamplerConfig": {
"rackConfigurationName": "ITM-18 4 x 11",
"finePositioningMode": false,
"capacity": 1,
"needleDeadVolume": 0.24,
"deadVolume": 2.99,
"rinsingFlowRate": 35,
"pickupFlowRate": 10,
"rinsingPumpSpeed": 100,
"homeOffsetX": 0,
"homeOffsetY": 0,
"syringeVolume": 25,
"purgeRatio": 3,
"portName": null,
"maxDefaultBottleVolume": 250,
"maxDefaultWasteVolume": 5000,
"currentBottleVolume": 250,
"currentWasteVolume": 0,
"ignored": false
},
"rfidConfig": null,
"levelSensorConfig": null,
"ledConfig": null
}
}
Channel for receiving responses from the system.
Available only on servers:
MQTT Client unique identifier.
Accepts the following message:
Response message from the system. Contains information about the execution status of commands and any results or data.
Response message to a specific request.
Usupported request error example.
{
"timestamp": "2024-01-08T10:00:00.000Z",
"type": "ERROR",
"code": "RMT002",
"value": "RMT002: Unsupported request.",
"requestUuid": "d8e69d62-f5a8-43a5-9dd1-de474acb51f5"
}
Success response example.
{
"timestamp": "2024-01-08T10:00:00.000Z",
"type": "SUCCESS",
"code": "0",
"value": "None",
"requestUuid": "d8e69d62-f5a8-43a5-9dd1-de474acb51f5"
}
Channel for receiving status updates from the system.
Available only on servers:
Accepts the following message:
System initializing UV Detector
{
"state": "INITIALIZING",
"description": "Turning on UV Lamps..."
}
Channel for receiving error messages from the system.
Available only on servers:
Accepts the following message:
Error message indicating issues or failures. Includes error codes and a description for troubleshooting.
System detailed error.
Pump module not responding
{
"type": {
"code": "PMP002",
"description": "Serial port communication error"
}
}
Channel for receiving system configuration on reload or first connection.
Available only on servers:
Accepts the following message:
Configuration message showing all system and peripheral parameters.
Comprehensive configuration object for the system, encapsulating all settings for system operation, including model, connection, module configurations, and more.
Full simulated PF5250.
{
"model": "PF_5_250",
"option": "NONE",
"connectionConfig": {
"autoPortDetection": true,
"autoConnection": true,
"heartbeatCheck": false,
"undetectableVirtualPorts": [],
"ignoredVirtualPorts": []
},
"pumpConfig": {
"model": "PF_5250",
"maxFlowRate": 250,
"maxPressure": 250,
"portName": null,
"valves": [
"LOOP",
"C1_C2"
]
},
"collectorConfig": {
"capacity": 3,
"uvLeakSensor": true,
"needleVolume": 0,
"homeOffsetX": -6,
"homeOffsetY": -27.5,
"collectorLeakSensor": true,
"deadVolume": 2.936,
"portName": null,
"ignored": false
},
"uvDetectorConfig": {
"type": "UV800",
"portName": null,
"ignored": false
},
"extraModules": [
"ELSD",
"MASS",
"AUTO_SAMPLER"
],
"simulatedModules": [
"PUMP",
"COLLECTOR",
"UV",
"ELSD",
"ELSD_SPLIT",
"MASS",
"MASS_SPLIT",
"AUTO_SAMPLER"
],
"virtualModules": [],
"injectionPumpConfig": null,
"secondCollectorConfig": null,
"elsdConfig": {
"detectorConfig": {
"internal": true,
"nebulizationDurationMillis": 2100,
"portName": null
},
"splitConfig": {
"makeupPumpFlowRate": 0.15,
"valveRotationPeriodMillis": 1500,
"deadVolume": 0.002,
"portName": null
},
"ignored": false
},
"massConfig": {
"detectorConfig": {
"model": "MS2000",
"nebulizationDurationMillis": 1000,
"capillaryTemperatureDeltaPercentage": 0.1,
"capVoltageDeltaPercentage": 0.1,
"sourceGasTemperatureDelta": 10,
"esiVoltageDelta": 150,
"apciCoronaDischargeDelta": 1
},
"splitConfig": {
"makeupPumpFlowRate": 0.1,
"valveRotationPeriodMillis": 1500,
"deadVolume": 0.019,
"portName": null,
"dilutionPumpFlowRate": 0.5
},
"ignored": false
},
"autoSamplerConfig": {
"rackConfigurationName": "ITM-18 4 x 11",
"finePositioningMode": false,
"capacity": 1,
"needleDeadVolume": 0.24,
"deadVolume": 2.99,
"rinsingFlowRate": 35,
"pickupFlowRate": 10,
"rinsingPumpSpeed": 100,
"homeOffsetX": 0,
"homeOffsetY": 0,
"syringeVolume": 25,
"purgeRatio": 3,
"portName": null,
"maxDefaultBottleVolume": 250,
"maxDefaultWasteVolume": 5000,
"currentBottleVolume": 250,
"currentWasteVolume": 0,
"ignored": false
},
"rfidConfig": null,
"levelSensorConfig": null,
"ledConfig": null
}
Channel for receiving collector status.
Available only on servers:
Accepts the following message:
{
"status": "STOP",
"position": {
"x": 9999,
"y": 9999,
"z": 0
},
"valveStatus": "WASTE",
"leakAlarm": "NONE",
"uvLeakAlarm": "NONE"
}
Channel for receiving collector current tube.
Available only on servers:
Accepts the following message:
Current tube updates indicating number, index and volume.
Tube
{
"tubesData": [
{
"tube": {
"tubeIndex": {
"rackIndex": 0,
"xIndex": 0,
"yIndex": 0
},
"tubeNumber": {
"rackIndex": 0,
"number": 1
},
"currentVolume": 3,
"maxVolume": 25,
"full": false,
"rinsingTube": true,
"startTime": -1,
"endTime": -1
}
}
]
}
Channel for receiving collection tubes data messages from the system.
Available only on servers:
Accepts the following message:
Collection data message indicating tube, rack and peak number, collected volume and detectors data.
Collection tubes data
Example data representing the collection tubes with their respective detector mappings.
{
"tubesData": [
{
"tube": {
"tubeIndex": {
"rackIndex": 0,
"xIndex": 0,
"yIndex": 0
},
"tubeNumber": {
"rackIndex": 0,
"number": 1
},
"currentVolume": 12.875,
"maxVolume": 25,
"full": true,
"rinsingTube": false,
"startTime": 38496,
"endTime": 77001
},
"uvDetectorMap": {
"[200..200]": {
"minValue": 193.9264877319336,
"maxValue": 808.8228271484375,
"averageValue": 501.6180595893365,
"dataCount": 77
},
"[300..300]": {
"minValue": 328.2649871826172,
"maxValue": 499.2803955078125,
"averageValue": 452.3331701501623,
"dataCount": 77
}
},
"elsdDetectorMap": {
"[35..35]": {
"minValue": 10.3,
"maxValue": 48,
"averageValue": 34.54415584415583,
"dataCount": 77
}
},
"massDetectorMap": {},
"peakNumber": 1
}
]
}
Channel for receiving elution data.
Available only on servers:
Accepts the following message:
Elution data message indicating time, percentages, flow rate and pressure.
Elution data
{
"time": 225505,
"data": [
{
"id": null,
"channel": {
"type": "A",
"unit": "PERCENTAGE"
},
"value": 100
},
{
"id": null,
"channel": {
"type": "B",
"unit": "PERCENTAGE"
},
"value": 0
},
{
"id": null,
"channel": {
"type": "C",
"unit": "PERCENTAGE"
},
"value": 0
},
{
"id": null,
"channel": {
"type": "D",
"unit": "PERCENTAGE"
},
"value": 0
},
{
"id": null,
"channel": {
"type": "FLOW_RATE",
"unit": "FLOW_RATE"
},
"value": 100
},
{
"id": null,
"channel": {
"type": "PRESSURE",
"unit": "BAR"
},
"value": 2
}
]
}
Channel for receiving synchronized detection data during a purification process.
Available only on servers:
Accepts the following message:
Detection data message indicating time, flow rate, detection channels, value and threshold.
Detection data
{
"time": 586002,
"flowRate": 15,
"data": [
{
"channel": {
"type": "UV1",
"unit": "MAU",
"range": {
"max": 200,
"min": 200
},
"threshold": 10
},
"value": 647.75
},
{
"channel": {
"type": "ELSD",
"unit": "MV",
"range": {
"max": 35,
"min": 35
},
"threshold": 10
},
"value": 397.3
},
{
"channel": {
"type": "XIC1",
"unit": "MC_S",
"range": {
"max": 199,
"min": 192
},
"threshold": 10
},
"value": 700.464
},
{
"channel": {
"type": "XIC2",
"unit": "MC_S",
"range": {
"max": 254,
"min": 245
},
"threshold": 10
},
"value": 0
}
]
}
Channel for receiving unsynchronized UV detection data during an elution purge process.
Available only on servers:
Accepts the following message:
Detection data message indicating time, flow rate, uv channels, value and threshold.
Detection data
{
"time": 240004,
"flowRate": 100,
"data": [
{
"channel": {
"type": "UV1",
"unit": "MAU",
"range": {
"max": 254,
"min": 254
},
"threshold": 0
},
"value": 845
}
]
}
Channel for receiving unsynchronized ELSD detection data during an ELSD purge process.
Available only on servers:
Accepts the following message:
Detection data message indicating time, flow rate, ELSD channel, value and threshold.
Detection data
{
"time": 240004,
"flowRate": 100,
"data": [
{
"channel": {
"type": "ELSD",
"unit": "MV",
"range": {
"max": 35,
"min": 35
},
"threshold": 0
},
"value": 200
}
]
}
Channel for receiving unsynchronized Mass detection data during a Mass purge process.
Available only on servers:
Accepts the following message:
Detection data message indicating time, flow rate, Mass channels, value and threshold.
Detection data
{
"time": 240004,
"flowRate": 100,
"data": [
{
"channel": {
"type": "XIC1",
"unit": "MC_S",
"range": {
"max": 199,
"min": 192
},
"threshold": 0
},
"value": 700
}
]
}
Channel for receiving service queue status.
Available only on servers:
Accepts the following message:
Service queue status indicating global state and detailed current process status
Global service queue status and current block status.
Running SQ with 2 parallel processes
{
"state": "RUNNING",
"currentBlockStatus": {
"rank": 1,
"name": "Elution auto-priming, ELSD prime",
"status": {
"state": "RUNNING",
"time": 238001,
"progress": 0.944448,
"description": ""
},
"parallelProcessStatus": {
"ELUTION_PURGE": {
"state": "RUNNING",
"time": 237998,
"progress": 0.9875,
"description": ""
},
"ELSD_PRIME_PURGE": {
"state": "DONE",
"time": 68924,
"progress": 1,
"description": ""
}
}
}
}
Channel for receiving Mass split status.
Available only on servers:
Accepts the following message:
Mass split status message indicating valve and pumps states, volumes, pressures, flow rates and alarms.
{
"valveState": "RUNNING",
"valveRotationPeriod": 1.5,
"makeUpPumpState": "RUNNING",
"dilutionPumpState": "RUNNING",
"makeUpPumpFlowRate": 0.1,
"makeUpPumpVolumeLeft": 0,
"dilutionPumpFlowRate": 0.5,
"dilutionPumpVolumeLeft": 0,
"dilutionPumpCurrentPressure": 60,
"makeUpPumpCurrentPressure": 60,
"makeUpSolventAlarm": false,
"dilutionSolventAlarm": false,
"makeUpPumpPressureAlarm": false,
"dilutionPumpPressureAlarm": false
}
Channel for receiving Auto sampler status.
Available only on servers:
Accepts the following message:
Auto sampler status indicating state, total steps, step, total time, time and description
Auto sampler detailed status
{
"state": "LOADING",
"totalSteps": 51,
"step": 50,
"totalTime": 117000,
"time": 2514,
"description": "MOVE_ARM"
}
This message contains the information needed to send a request to the system. Depending on the command used, a specific parameter may be required.
Defines the structure for sending commands to the system. Each request must specify a command. Some commands may require additional parameters to execute properly.
Response message from the system. Contains information about the execution status of commands and any results or data.
Response message to a specific request.
Status updates from the system.
Current system status.
Error message indicating issues or failures. Includes error codes and a description for troubleshooting.
System detailed error.
Configuration message showing all system and peripheral parameters.
Comprehensive configuration object for the system, encapsulating all settings for system operation, including model, connection, module configurations, and more.
Collector status updates from the system.
Collector status
Current tube updates indicating number, index and volume.
Tube
Collection data message indicating tube, rack and peak number, collected volume and detectors data.
Collection tubes data
Elution data message indicating time, percentages, flow rate and pressure.
Elution data
Detection data message indicating time, flow rate, detection channels, value and threshold.
Detection data
Detection data message indicating time, flow rate, uv channels, value and threshold.
Detection data
Detection data message indicating time, flow rate, ELSD channel, value and threshold.
Detection data
Detection data message indicating time, flow rate, Mass channels, value and threshold.
Detection data
Service queue status indicating global state and detailed current process status
Global service queue status and current block status.
Mass split status message indicating valve and pumps states, volumes, pressures, flow rates and alarms.
Auto sampler status indicating state, total steps, step, total time, time and description
Auto sampler detailed status
Comprehensive configuration object for the system, encapsulating all settings for system operation, including model, connection, module configurations, and more.
Configuration settings for establishing a connection to the system. Includes options for port detection and connection automation.
Configuration settings for the pump module of the system. Includes details about the pump model, maximum flow rate, maximum pressure, and valve configurations.
Configuration settings for the collector module of the system. This includes parameters for capacity, sensor options, physical offsets for precise positioning, and other specific settings relevant to collector operation.
Configuration settings for the UV detector module of the system. It outlines the specifications for the type of UV detector used.
Configuration parameters for the ELSD module. It includes settings for the ELSD detector and split.
Specific configuration settings for the ELSD detector. This includes parameters like nebulization duration and whether the detector is internal or external to the system.
Configuration for the ELSD split, including settings for the makeup pump flow rate and the valve rotation period.
Configuration parameters for the Mass module. It includes settings for the Mass detector and split.
Specific configuration settings for the Mass detector. This includes parameters like model, nebulization duration, and adjustments for capillary temperature and voltage used during the detector's stabilization.
Configuration for the Mass split, including settings for the makeup and dilution pumps, and the valve rotation period.
Configuration parameters for the auto-sampler module. It includes settings for the rack configuration, sample handling parameters, and physical positioning for precise sample injection.
This schema defines the configuration for the Phoenix Server application, specifying how it connects to and interacts with the puriFlash® system. It includes network settings, MQTT broker options, and system initialization preferences.
Defines the structure for sending commands to the system. Each request must specify a command. Some commands may require additional parameters to execute properly.
An array consisting of configurations for each detector channel used in the method. Each element in the array contains the parameters for simulating a detector response.
Defines the simulation parameters for a specific type of detector channel, including the channel type and the steps for simulation.
Represents a segment of the simulation
List of sequential service queue blocks
Parallel processes parameters.
Process parameters
Pre purification parameters
Post purification parameters
Purification parameters
Stop mode parameters
Injection parameters
Auto sampler injection parameters
Injection pump parameters
Column parameters
Solvents parameters
Solvent parameters
Elution purge parameters
Detection parameters
Elution parameters
Mass parameters
Represents a step in the elution process with specific conditions for solvent percentages, flow rate, and whether the step is part of a gradient or an isocratic elution. Note: The sum of the percentages of solvents A, B, C, and D must equal 100% to ensure a valid solvent composition for each step.
Collection step
Detection channel
Collection parameters
Needle rinsing parameters
ELSD purge parameters
ELSD prime purge parameters
Mass purge parameters
Response message to a specific request.
Current system status.
System detailed error.
Error type object composed of a code and a description
Collector status
Collection tubes data
Tube data
Tube
Tube index
Tube number
A map where each key is a string representing a range (e.g., "[200..400]") and each value conforms to the DetectionDataMap schema. The range format in the key is "[min..max]".
Elution data
Elution channel value
Elution channel
Detection data
Detection channel value
Represents the service execution state.
Specifies the process type.
Defines the process execution state, time spent (ms), progress, and a descriptive note if any.
Progress status of all parallel processes.
Service queue entry 'block' status.
Global service queue status and current block status.
Auto sampler detailed status
MQTT client unique identifier used during connection